﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using KimberlyDashboardLIB;
using System.Data;

namespace KimberlyDashboard.admin
{
    public partial class GestionIndicadores : cGlobal
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                this.CargarPerspectivas();
                //this.CargarGraficos();
                this.CargarUnidadesMedida();
                this.CargarIndicadores();
            }
        }


        #region "Eventos"

        protected void lnkGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                //Se crea/actualiza el indicador
                Indicador ind = new Indicador();
                ind.Id = Convert.ToInt32(this.hdnId.Value);
                ind.IdPerspectiva = Convert.ToInt32(this.drpPerspectiva.SelectedValue);
                ind.Nombre = this.txtNombre.Text.Trim();
                //ind.Grafico = (Enumeraciones.Grafico)Enum.Parse(typeof(Enumeraciones.Grafico), this.drpGrafico.SelectedValue);
                ind.Grafico = Enumeraciones.Grafico.TACOMETRO;
                ind.UnidadMedida = (Enumeraciones.UnidadMedida)Enum.Parse(typeof(Enumeraciones.UnidadMedida), this.drpUnidadMedida.SelectedValue);

                ind.Actualizar();

                Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('El indicador ha sido guardado'); </Script>");
                this.hdnId.Value = "0";
                this.txtNombre.Text = "";
                this.drpPerspectiva.SelectedIndex = 0;
                //this.drpGrafico.SelectedIndex = 0;
                this.drpUnidadMedida.SelectedIndex = 0;
                this.CargarIndicadores();
            }
            catch (Exception ex)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se pudo guardar el indicador: " + Utilidades.FormatearMensajeError(ex.Message) + "'); </Script>");
            }
        }        

        protected void grdUsuarios_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            //Obtiene el id a eliminar
            int id = Convert.ToInt32(this.grdUsuarios.DataKeys[e.RowIndex].Value.ToString());
            try
            {
                Indicador ind = new Indicador();
                ind.Eliminar(id);
                Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('El indicador ha sido eliminado'); </Script>");
                this.CargarIndicadores();
            }
            catch (Exception ex)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se pudo eliminar el indicador: " + Utilidades.FormatearMensajeError(ex.Message) + "'); </Script>");
            }
        }

        protected void grdUsuarios_RowEditing(object sender, GridViewEditEventArgs e)
        {
            try
            {
                //Se obtiene la info del rol a editar            
                GridViewRow gvr = this.grdUsuarios.Rows[e.NewEditIndex];                
                this.txtNombre.Text = Server.HtmlDecode(gvr.Cells[2].Text);
                this.hdnId.Value = this.grdUsuarios.DataKeys[e.NewEditIndex].Values[0].ToString();
                this.drpPerspectiva.SelectedValue = this.grdUsuarios.DataKeys[e.NewEditIndex].Values[1].ToString();
                //this.drpGrafico.SelectedValue = Server.HtmlDecode(gvr.Cells[3].Text);
                this.drpUnidadMedida.SelectedValue = Server.HtmlDecode(gvr.Cells[3].Text);

                this.grdUsuarios.Rows[e.NewEditIndex].BackColor = System.Drawing.Color.Beige;
            }
            catch (Exception ex)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('Ocurrió un error al obtener la información del indicador: " + Utilidades.FormatearMensajeError(ex.Message) + "'); </Script>");
            }        
        }
        #endregion


        #region "Metodos privados"

        private void CargarPerspectivas()
        {
            try
            {
                DataSet dts = objDashboard.GetPerspectivas();                
                DropDownFill(this.drpPerspectiva, dts.Tables[0], dts.Tables[0].Columns[1].ColumnName, dts.Tables[0].Columns[0].ColumnName, "Seleccione...", "0");
            }
            catch (Exception ex)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se pudieron cargar las perspectivas: " + Utilidades.FormatearMensajeError(ex.Message) + "'); </Script>");
            }
        }

        private void CargarGraficos()
        {
            //try
            //{
            //    string[] arrGraficos = objDashboard.GetGraficos();
            //    this.drpGrafico.DataSource = arrGraficos;
            //    this.drpGrafico.DataBind();
            //}
            //catch (Exception ex)
            //{
            //    Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se pudieron cargar los gráficos: " + Utilidades.FormatearMensajeError(ex.Message) + "'); </Script>");
            //}
        }

        private void CargarUnidadesMedida()
        {
            try
            {
                string[] arrUnidades = objDashboard.GetUnidadesMedida();
                this.drpUnidadMedida.DataSource = arrUnidades;
                this.drpUnidadMedida.DataBind();
            }
            catch (Exception ex)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se pudieron cargar las unidades de medida: " + Utilidades.FormatearMensajeError(ex.Message) + "'); </Script>");
            }
        }

        private void CargarIndicadores()
        {
            try
            {
                DataSet dts = objDashboard.GetIndicadores(0);
                if (dts.Tables[0].Rows.Count > 0)
                    this.grdUsuarios.DataSource = dts.Tables[0];
                else
                    this.grdUsuarios.DataSource = null;

                this.grdUsuarios.DataBind();
            }
            catch (Exception ex)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se pudieron cargar los indicadores: " + Utilidades.FormatearMensajeError(ex.Message) + "'); </Script>");
            }
        }


        #endregion


    }
}